/**
 * Copyright (c) 2007,中企动力华南研发中心<br>
 * All rights reserved.
 */
package com.ce.pms.common.util;

import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;

import com.ce.pms.common.model.SysrefcodeDO;

/**
 * 功能描述：BigDecimal的工具类<br>
 * @author 罗军林 创建日期：2008-11-19
 */
public class BigDecimalUtil {
	/**
	 * 功能描述:返回result四舍五入后的结果<br>
	 * @param result
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-11-19<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public static BigDecimal warpResult(BigDecimal result){
		return result.setScale(2, RoundingMode.HALF_UP);
	}

	/**
	 * 功能描述:比较a是否大于0<br>
	 * 如果a=null 或者 <=0 ，返回false <br>
	 * @param a
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2009-1-7<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public static boolean isBigZero(BigDecimal a){
		return a!=null && BigDecimal.ZERO.compareTo(a)<0;
	}

	/**
	 * 功能描述:返回两数的和，如果有一项为NULL，则直接返回另一项<br>
	 * @param a
	 * @param b
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-24<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public static BigDecimal addBigDecimal(BigDecimal a,BigDecimal b){
		if(null==a){
			return b;
		}else if(null==b){
			return a;
		}else{
			return a.add(b);
		}
	}

	/**
	 * 功能描述: 得到一个PMS系统默认的BigDecimal零实例，标度为2。 <br>
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-12-17  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public static BigDecimal getZEROInstance(){
		return BigDecimal.valueOf(000l,SysrefcodeDO.DATA_PRICE_SCALE);
	}

	/**
	 * 功能描述: 精度为18,四舍五入的MathContext <br>
	 * @return
	 *
	 * Create author:付湘辉 <br>
	 * Create on:2008-12-17  <br>
	 * Edit author:  <br>
	 * Edit on:    <br>
	 * Why:     <br>
	 */
	public static MathContext getMathContext(){
    	return new MathContext(SysrefcodeDO.DATA_PRICE_PRECISION,RoundingMode.HALF_UP);
    }
}
